home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / listings / v_13_03 / stout / avgfilt.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-06  |  977 b   |  36 lines

  1. //
  2. //  AVGFILT.HPP - Header file for data averaging filter.
  3. //
  4.  
  5. #include <limits.h>
  6. #include "circbuf.hpp"
  7.  
  8. class AvgFilt_T : public cbuf_t<short>
  9. {
  10. public:
  11.       short AvgFilt();
  12. };
  13.  
  14. /************************************************************************/
  15. /*                                                                      */
  16. /*  AvgFilt() - Function to average the data in a circular buffer.      */
  17. /*                                                                      */
  18. /************************************************************************/
  19.  
  20. short AvgFilt_T::AvgFilt()
  21. {
  22.       size_t i;
  23.       long accum;
  24.       short *obuf  = new short[size * sizeof(short)];
  25.  
  26.       // cbuf_t::buf may be subject to asynchronous modification,
  27.       //  so take a snapshot of it.
  28.  
  29.       memcpy(obuf, buf, size * sizeof(short));
  30.       for (i = 0, accum = 0L; i < size; ++i)
  31.             accum += obuf[i];
  32.       return(short)(accum / size);
  33. }
  34.  
  35.  
  36.